package cn.com.utils.crypto;

import com.sun.jna.Structure;

import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;

/**
 * 动态库调用参数
 **/
public class GoString extends Structure {

    /**
     * 指向字符串的指针
     */
    public String p;

    /**
     * 字符串长度
     */
    public long n;

    /**
     * 获取字段顺序
     *
     * @return {@link List}<{@link String}>
     */
    protected List<String> getFieldOrder() {
        return Arrays.asList(new String[]{"p", "n"});
    }

    /**
     * 按值计算Value
     *
     * @author ChaoHong.Mao
     * @date 2023/05/19
     */
    public static class ByValue extends GoString implements Structure.ByValue {

        /**
         * 构造函数
         *
         * @param value 值
         */
        public ByValue(String value) {
            p = value;
            n = p.getBytes(StandardCharsets.UTF_8).length;
        }
    }

}
